home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1994 November / Cd Ware (Nro. 2) - Epimundo.iso / DOS / CM / NMREP106.ZIP / NETMAIL.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1994-04-19  |  8.1 KB  |  524 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  INTEGER004
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     Integer  INTEGER007
  30.     Integer  INTEGER008
  31.     Integer  INTEGER009
  32.     Integer  INTEGER010
  33.     Integer  INTEGER011
  34.     Integer  INTEGER012
  35.     Integer  INTEGER013
  36.     Integer  INTEGER014
  37.     Integer  INTEGER015
  38.     Integer  INTEGER016
  39.     Integer  INTEGER017
  40.     Integer  INTEGER018
  41.     Integer  INTEGER019
  42.     Integer  INTEGER020
  43.     Integer  INTEGER021
  44.     Integer  INTEGER022
  45.     Integer  INTEGER023
  46.     Integer  INTEGER024
  47.     Integer  INTEGER025
  48.     Integer  INTEGER026
  49.     Integer  INTEGER027
  50.     Integer  INTEGER028
  51.     Integer  INTEGER029
  52.     String   STRING001
  53.     String   STRING002
  54.     String   STRING003
  55.     String   STRING004
  56.     String   STRING005
  57.     String   STRING006
  58.     String   STRING007
  59.     String   STRING008
  60.     String   STRING009
  61.     String   STRING010
  62.     String   STRING011
  63.     String   STRING012
  64.     String   STRING013
  65.     String   STRING014
  66.     String   STRING015
  67.     String   STRING016
  68.     String   STRING017
  69.     String   STRING018
  70.     String   STRING019
  71.     String   STRING020
  72.     String   STRING021
  73.     String   STRING022
  74.     String   STRING023
  75.     String   STRING024
  76.     String   STRING025
  77.  
  78. ;------------------------------------------------------------------------------
  79.  
  80.     INTEGER011 = 1
  81.     INTEGER012 = 3625
  82.     INTEGER001 = 0
  83.     INTEGER002 = 0
  84.     INTEGER003 = 0
  85.     INTEGER004 = 0
  86.     INTEGER006 = 0
  87.     INTEGER007 = 0
  88.     INTEGER008 = 0
  89.     INTEGER009 = 0
  90.     INTEGER010 = 0
  91.     STRING008 = Chr(13) + Chr(10)
  92.     STRING003 = ""
  93.     STRING009 = "N"
  94.     STRING010 = "N"
  95.     STRING011 = "Y"
  96.     STRING005 = ""
  97.     STRING001 = ""
  98.     GetUser
  99.     Gosub LABEL003
  100.     If (AnsiOn()) Then
  101.         If (U_Expert) Then
  102.             STRING015 = Upper(STRING013)
  103.         Else
  104.             STRING015 = Upper(STRING014)
  105.         Endif
  106.     Else
  107.         STRING015 = "NO"
  108.     Endif
  109.     If (U_FSE == 1) Then
  110.         STRING011 = "Y"
  111.     Else
  112.         STRING011 = "N"
  113.     Endif
  114.     If ((U_Expert == 0) || (STRING015 == "YES")) Then
  115.         Cls
  116.     Endif
  117.     While (TokCount() > 0) Do
  118.         STRING001 = STRING001 + " " + GetToken()
  119.     EndWhile
  120.     STRING001 = Trim(STRING001, " ")
  121.     If (STRING015 == "YES") Then
  122.         Gosub LABEL010
  123.     Else
  124.         If ((U_Expert == 0) && Exist(PPEPath() + "Wlcm*.*")) Then
  125.             DispFile PPEPath() + "Wlcm", 2 + 1 + 4
  126.         Endif
  127.         InputText "Name (Enter)=ABORT ?", STRING001, 15, 25
  128.         Newline
  129.         If (Len(Trim(STRING001, " ")) < 1) Then
  130.             Goto LABEL002
  131.         Endif
  132.         InputText "Subject (ENTER)=Abort ?", STRING007, 15, 60
  133.         Newline
  134.         If (Len(STRING007) < 1) Then
  135.             Goto LABEL002
  136.         Endif
  137.         Gosub LABEL004
  138.         Gosub LABEL009
  139.     Endif
  140.     If (U_FSEP) Then
  141.         PromptStr 498, STRING011, 1, "Y", 256 + 8 + 4
  142.     Endif
  143.     If (BOOLEAN004 == 0) Then
  144.         STRING005 = "E" + Chr(13) + Chr(10)
  145.         STRING005 = STRING005 + STRING001 + STRING008
  146.         STRING005 = STRING005 + STRING007 + STRING008
  147.         STRING005 = STRING005 + "N" + STRING008
  148.         If (U_FSE == 0) Then
  149.             If (U_FSEP == 1) Then
  150.                 If (STRING011 == "Y") Then
  151.                     STRING005 = STRING005 + "Y" + STRING008
  152.                     Goto LABEL001
  153.                 Endif
  154.                 STRING005 = STRING005 + "N" + STRING008
  155.             Endif
  156.         Endif
  157.         :LABEL001
  158.         STRING005 = STRING005 + "(" + STRING002 + ")" + STRING008
  159.         If (STRING009 == "I") Then
  160.             STRING005 = STRING005 + "(IMMEDIATE)" + STRING008
  161.         Endif
  162.         If (STRING009 == "D") Then
  163.             STRING005 = STRING005 + "(DIRECT)" + STRING008
  164.         Endif
  165.         If (STRING009 == "H") Then
  166.             STRING005 = STRING005 + "(HOLD)" + STRING008
  167.         Endif
  168.         If (STRING009 == "C") Then
  169.             STRING005 = STRING005 + "(CRASH)" + STRING008
  170.         Endif
  171.     Endif
  172.     :LABEL002
  173.     If (BOOLEAN004 == 1) Then
  174.         Cls
  175.     Endif
  176.     PrintLn "     NetMailer -- v1.6     "
  177.     PrintLn " (c) 1994 Tranquility Base "
  178.     PrintLn "    All Rights Reserved    "
  179.     If ((Len(STRING005) > 0) && (BOOLEAN004 == 0)) Then
  180.         KbdStuff STRING005
  181.     Endif
  182.     End
  183.     :LABEL003
  184.     FClose 1
  185.     FOpen 1, PPEPath() + "NetMail.CFG", 0, 0
  186.     FGet 1, INTEGER011
  187.     FGet 1, INTEGER012
  188.     FGet 1, INTEGER013
  189.     FGet 1, INTEGER014
  190.     FGet 1, INTEGER015
  191.     FGet 1, INTEGER016
  192.     FGet 1, INTEGER017
  193.     FGet 1, STRING017
  194.     FGet 1, STRING018
  195.     FGet 1, STRING012
  196.     FGet 1, STRING013
  197.     FGet 1, STRING014
  198.     FGet 1, STRING016
  199.     INTEGER018 = S2I(Left(STRING016, InStr(STRING016, ",") - 1), 10)
  200.     INTEGER019 = S2I(Mid(STRING016, InStr(STRING016, ",") + 1, Len(STRING016) - InStr(STRING016, ",")), 10)
  201.     FGet 1, STRING016
  202.     INTEGER020 = S2I(Left(STRING016, InStr(STRING016, ",") - 1), 10)
  203.     INTEGER021 = S2I(Mid(STRING016, InStr(STRING016, ",") + 1, Len(STRING016) - InStr(STRING016, ",")), 10)
  204.     FGet 1, STRING016
  205.     INTEGER022 = S2I(Left(STRING016, InStr(STRING016, ",") - 1), 10)
  206.     INTEGER023 = S2I(Mid(STRING016, InStr(STRING016, ",") + 1, Len(STRING016) - InStr(STRING016, ",")), 10)
  207.     FGet 1, STRING016
  208.     INTEGER024 = S2I(Left(STRING016, InStr(STRING016, ",") - 1), 10)
  209.     INTEGER025 = S2I(Mid(STRING016, InStr(STRING016, ",") + 1, Len(STRING016) - InStr(STRING016, ",")), 10)
  210.     If (Ferr(1) == 1) Then
  211.         PrintLn ""
  212.         PrintLn "Please inform the SYSOP that there is a problem with the CONFIG file."
  213.         FClose 1
  214.         BOOLEAN002 = 1
  215.     Else
  216.         FClose 1
  217.         BOOLEAN002 = 0
  218.     Endif
  219.     :LABEL004
  220.     BOOLEAN001 = 0
  221.     If (STRING015 == "NO") Then
  222.         If ((U_Expert == 0) && Exist(PPEPath() + "ADDR*.*")) Then
  223.             DispFile PPEPath() + "ADDR", 2 + 1 + 4
  224.             InputText "", STRING002, 15, 30
  225.             Goto LABEL005
  226.         Endif
  227.         InputText "@X0FAddress to Send To (ENTER)=Abort ?", STRING002, 15, 30
  228.         :LABEL005
  229.         Newline
  230.     Endif
  231.     If (Len(STRING002) < 1) Then
  232.         BOOLEAN001 = 1
  233.         Return
  234.     Endif
  235.     STRING002 = Trim(STRING002, " ")
  236.     For INTEGER005 = 1 To Len(STRING002)
  237.         STRING006 = Mid(STRING002, INTEGER005, 1)
  238.         If (STRING006 == ":") Then
  239.             INTEGER001 = S2I(STRING004, 10)
  240.             STRING004 = ""
  241.             INTEGER006 = 1
  242.             Continue
  243.         Endif
  244.         If (STRING006 == "/") Then
  245.             INTEGER002 = S2I(STRING004, 10)
  246.             STRING004 = ""
  247.             INTEGER007 = 1
  248.             Continue
  249.         Endif
  250.         If (STRING006 == ".") Then
  251.             If (INTEGER008 == 0) Then
  252.                 INTEGER003 = S2I(STRING004, 10)
  253.                 STRING004 = ""
  254.                 INTEGER008 = 1
  255.                 Goto LABEL006
  256.             Endif
  257.             STRING004 = STRING004 + STRING006
  258.             :LABEL006
  259.             Continue
  260.         Endif
  261.         If (STRING006 == "@") Then
  262.             INTEGER004 = S2I(STRING004, 10)
  263.             STRING004 = ""
  264.             INTEGER009 = 1
  265.             Continue
  266.         Endif
  267.         STRING004 = STRING004 + STRING006
  268.     Next
  269.     If (Len(STRING004) > 0) Then
  270.         If (INTEGER008 > 0) Then
  271.             If (INTEGER009 > 0) Then
  272.                 STRING003 = Trim(STRING004, " ")
  273.                 INTEGER010 = 1
  274.                 Goto LABEL007
  275.             Endif
  276.             INTEGER004 = S2I(STRING004, 10)
  277.             INTEGER009 = 1
  278.             :LABEL007
  279.             Goto LABEL008
  280.         Endif
  281.         INTEGER003 = S2I(STRING004, 10)
  282.         INTEGER008 = 1
  283.     Endif
  284.     :LABEL008
  285.     If (INTEGER006 == 0) INTEGER001 = INTEGER011
  286.     If (INTEGER007 == 0) INTEGER002 = INTEGER012
  287.     If (INTEGER008 == 0) Then
  288.         PrintLn "Your address is improperly formatted, please try again."
  289.         Newline
  290.         BOOLEAN001 = 1
  291.         Return
  292.     Endif
  293.     STRING002 = Trim(I2S(INTEGER001, 10), " ")
  294.     STRING002 = STRING002 + ":" + Trim(I2S(INTEGER002, 10), " ")
  295.     STRING002 = STRING002 + "/" + Trim(I2S(INTEGER003, 10), " ")
  296.     If (INTEGER009 == 1) Then
  297.         STRING002 = STRING002 + "." + Trim(I2S(INTEGER004, 10), " ")
  298.     Endif
  299.     If (INTEGER010 == 1) Then
  300.         STRING002 = STRING002 + "@" + STRING003
  301.     Endif
  302.     If (BOOLEAN001 == 1) Then
  303.         Goto LABEL004
  304.     Endif
  305.     Return
  306.     :LABEL009
  307.     If ((U_Expert == 0) && Exist(PPEPath() + "Ugnt*.*")) Then
  308.         DispFile PPEPath() + "Ugnt", 2 + 1 + 4
  309.     Else
  310.         PrintLn "@X0FUrgency Level:"
  311.         If (U_Sec >= INTEGER013) Then
  312.             PrintLn "     @X0F(@X0EI@X0F)@X09mmediate@X0F"
  313.         Endif
  314.         If (U_Sec >= INTEGER014) Then
  315.             PrintLn "     @X0F(@X0EC@X0F)@X09rash@X0F"
  316.         Endif
  317.         If (U_Sec >= INTEGER016) Then
  318.             PrintLn "    @X09h@X0F(@X0EO@X0F)@X09ld@X0F"
  319.         Endif
  320.         If (U_Sec >= INTEGER015) Then
  321.             PrintLn "     @X0F(@X0ED@X0F)@X09irect@X0F"
  322.         Endif
  323.         PrintLn "     @X0F(@X0EN@X0F)@X09ormal@X0F"
  324.         Print "@X0FUrgency Level (@X0EEnter@X0F)=Normal"
  325.     Endif
  326.     If (U_Sec >= INTEGER013) Then
  327.         STRING010 = STRING010 + "I"
  328.     Endif
  329.     If (U_Sec >= INTEGER014) Then
  330.         STRING010 = STRING010 + "C"
  331.     Endif
  332.     If (U_Sec >= INTEGER016) Then
  333.         STRING010 = STRING010 + "O"
  334.     Endif
  335.     If (U_Sec >= INTEGER015) Then
  336.         STRING010 = STRING010 + "D"
  337.     Endif
  338.     InputStr "", STRING009, 15, 1, STRING010, 256 + 4 + 8
  339.     :LABEL010
  340.     STRING019 = "STRING"
  341.     STRING022 = "@X0E"
  342.     STRING021 = "@X0F"
  343.     BOOLEAN003 = 1
  344.     DispFile PPEPath() + "RTNG", 2 + 1 + 4
  345.     While (BOOLEAN004 == 0) Do
  346.         STRING020 = Trim(STRING001, " ")
  347.         INTEGER026 = INTEGER018
  348.         INTEGER027 = INTEGER019
  349.         INTEGER028 = 50
  350.         Gosub LABEL011
  351.         STRING001 = Trim(STRING020, " ")
  352.         If (Len(Trim(STRING001, " ")) < 1) Then
  353.             BOOLEAN004 = 1
  354.             Continue
  355.         Endif
  356.         If (BOOLEAN004 == 0) Then
  357.             STRING019 = "STRING"
  358.             STRING020 = Trim(STRING007, " ")
  359.             STRING021 = "@X0F"
  360.             STRING022 = "@X0E"
  361.             INTEGER026 = INTEGER020
  362.             INTEGER027 = INTEGER021
  363.             INTEGER028 = 50
  364.             BOOLEAN003 = 1
  365.             Gosub LABEL011
  366.             STRING007 = Trim(STRING020, " ")
  367.         Endif
  368.         BOOLEAN001 = 1
  369.         While ((BOOLEAN001 == 1) && (BOOLEAN004 == 0)) Do
  370.             STRING020 = Trim(STRING002, " ")
  371.             INTEGER026 = INTEGER022
  372.             INTEGER027 = INTEGER023
  373.             INTEGER028 = 50
  374.             Gosub LABEL011
  375.             STRING002 = Trim(STRING020, " ")
  376.             Gosub LABEL004
  377.         EndWhile
  378.         If (BOOLEAN004 == 0) Then
  379.             STRING020 = Trim(STRING009, " ")
  380.             INTEGER026 = INTEGER024
  381.             INTEGER027 = INTEGER025
  382.             INTEGER028 = 1
  383.             Gosub LABEL011
  384.             STRING009 = Upper(Trim(STRING020, " "))
  385.         Endif
  386.         If (((Len(STRING001) > 0) && (Len(STRING002) > 0)) && (Len(STRING007) > 0)) Then
  387.             Break
  388.         Endif
  389.     EndWhile
  390.     Return
  391.     :LABEL011
  392.     STRING025 = STRING020
  393.     If ((INTEGER026 >= 0) && (INTEGER027 >= 0)) Then
  394.         AnsiPos INTEGER026, INTEGER027
  395.     Endif
  396.     STRING023 = "@X00" + STRING021 + Mid(STRING020, 1, INTEGER028)
  397.     Print STRING023
  398.     If ((INTEGER026 >= 0) && (INTEGER027 >= 0)) Then
  399.         AnsiPos INTEGER026, INTEGER027
  400.     Endif
  401.     If (BOOLEAN003) Then
  402.         INTEGER029 = 1
  403.         While (0 <> 13) Do
  404.             STRING024 = ""
  405.             While (Len(STRING024) == 0) Do
  406.                 STRING024 = Inkey()
  407.             EndWhile
  408.             If (STRING024 == Chr(8)) Then
  409.                 If (INTEGER029 > 1) Then
  410.                     Backup 1
  411.                     Print " "
  412.                     Backup 1
  413.                     STRING020 = Left(STRING020, INTEGER029 - 2) + " " + Right(STRING020, Len(STRING020) - INTEGER029 + 1)
  414.                     Dec INTEGER029
  415.                 Endif
  416.                 Continue
  417.             Endif
  418.             If ((STRING024 == "BADKEY") || (STRING024 == Chr(27))) Then
  419.                 BOOLEAN004 = 1
  420.                 Break
  421.                 Continue
  422.             Endif
  423.             If (Asc(STRING024) == 13) Then
  424.                 Break
  425.                 Continue
  426.             Endif
  427.             If ((Asc(STRING024) > 31) && (Asc(STRING024) < 122)) Then
  428.                 If (INTEGER029 > Len(STRING020)) Then
  429.                     STRING020 = STRING020 + STRING024
  430.                     Goto LABEL012
  431.                 Endif
  432.                 STRING020 = Left(STRING020, INTEGER029 - 1) + STRING024 + Right(STRING020, Len(STRING020) - INTEGER029)
  433.                 :LABEL012
  434.                 Print STRING022 + STRING024
  435.                 Inc INTEGER029
  436.                 Continue
  437.             Endif
  438.             PrintLn "*" + I2S(Asc(STRING024), 10) + "*"
  439.             Wait
  440.         EndWhile
  441.     Endif
  442.     Return
  443.  
  444. ;------------------------------------------------------------------------------
  445. ;
  446. ; Usage report (before postprocessing)
  447. ;
  448. ; ■ Statements used :
  449. ;
  450. ;    1       End
  451. ;    2       Cls
  452. ;    1       Wait
  453. ;    96      Goto 
  454. ;    123     Let 
  455. ;    4       Print 
  456. ;    13      PrintLn 
  457. ;    65      If 
  458. ;    4       DispFile 
  459. ;    1       FOpen 
  460. ;    3       FClose 
  461. ;    16      FGet 
  462. ;    1       GetUser
  463. ;    1       InputStr 
  464. ;    9       Gosub 
  465. ;    5       Return
  466. ;    1       PromptStr 
  467. ;    1       Inc 
  468. ;    1       Dec 
  469. ;    4       Newline
  470. ;    4       InputText 
  471. ;    1       KbdStuff 
  472. ;    2       AnsiPos 
  473. ;    2       Backup 
  474. ;
  475. ;
  476. ; ■ Functions used :
  477. ;
  478. ;    77      +
  479. ;    12      -
  480. ;    40      ==
  481. ;    1       <>
  482. ;    6       <
  483. ;    1       <=
  484. ;    11      >
  485. ;    14      >=
  486. ;    63      !
  487. ;    12      &&
  488. ;    3       ||
  489. ;    19      Len(
  490. ;    3       Upper()
  491. ;    6       Mid()
  492. ;    6       Left()
  493. ;    2       Right()
  494. ;    1       Ferr()
  495. ;    6       Chr()
  496. ;    4       Asc()
  497. ;    12      InStr()
  498. ;    17      Trim()
  499. ;    1       Inkey()
  500. ;    8       PPEPath()
  501. ;    1       GetToken()
  502. ;    3       Exist()
  503. ;    5       I2S()
  504. ;    14      S2I()
  505. ;    1       AnsiOn()
  506. ;    1       TokCount()
  507. ;
  508. ;------------------------------------------------------------------------------
  509. ;
  510. ; Analysis flags : No flag
  511. ;
  512. ;------------------------------------------------------------------------------
  513. ;
  514. ; Postprocessing report
  515. ;
  516. ;    1       For/Next
  517. ;    5       While/EndWhile
  518. ;    57      If/Then or If/Then/Else
  519. ;    0       Select Case
  520. ;
  521. ;------------------------------------------------------------------------------
  522. ;                 AEGiS Corp - Break the routines, code against the machines!
  523. ;------------------------------------------------------------------------------
  524.